/*
 * @Author: your name
 * @Date: 2022-03-29 18:29:52
 * @LastEditTime: 2022-04-14 17:44:12
 * @LastEditors: Please set LastEditors
 * @Description: 加密 / 解密 方法
 * @FilePath: \blog-api\src\utils\bcrypt.ts
 */
import { bcryptjs, hashSync, compareSync } from 'bcryptjs'

/**
 * 加密处理 - 同步方法
 * bcryptjs.hashSync(data, salt)
 *    - data  要加密的数据
 *    - slat  用于哈希密码的盐。如果指定为数字，则将使用指定的轮数生成盐并将其使用。推荐 10
 */

import { Logger } from '../utils/log4js';

export const hashPassword = (password, slat = 10) => {
  let logFormat = ` <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<4
    Request original url: ${hashSync}
    `;
  try {
    hashSync(password, slat)
  }catch(e) {
    console.error(e)
    logFormat = e
  }
  Logger.error(logFormat);

  return hashSync(password, slat);
}


/**
  * 校验 - 使用同步方法
  * bcryptjs.compareSync(data, encrypted)
  *    - data        要比较的数据, 使用登录时传递过来的密码
  *    - encrypted   要比较的数据, 使用从数据库中查询出来的加密过的密码
  */
export const isOk = (password, encryptPassword) => {
  return compareSync(password, encryptPassword);
}